home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-02-01 | 1.9 KB | 48 lines | [TEXT/CCL2] |
- ;-*- Mode: Lisp; Package: CCL -*-
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;; undefined-functions.lisp
- ;;copyright © 1992, 1993, Apple Computer, Inc.
-
- ; (undefined-functions) returns a list of undefined functions
-
- (in-package "CCL")
- (eval-when (:compile-toplevel :execute)
- (require "LISPEQU"))
-
- (export 'undefined-functions)
-
- (defun find-undefined ()
- (let* ((alist nil))
- (%map-lfuns
- #'(lambda (f)
- (let* ((v (%lfun-vector f)))
- (dotimes (i (%count-immrefs v))
- (multiple-value-bind (imm offset)
- (%nth-immediate v i)
- (when (and (eql offset $sym.fapply)
- (not (functionp (fboundp imm))))
- (let* ((already (assq imm alist)))
- (if already
- (pushnew f (cdr already))
- (push (list imm f) alist)))))))))
- alist))
-
- (defun report-undefined-functions (&optional expected)
- (let* ((undefined (remove-if #'(lambda (u) (memq (first u) expected))
- (find-undefined))))
- (when undefined
- (format t "~&Undefined function~P:" (length undefined))
- (dolist (u undefined)
- (format t "~&~4t~S referenced from: ~{~%~8t~s~}." (car u) (cdr u))))))
-
- (defun undefined-functions ()
- (report-undefined-functions
- '(cl-user::store-setf-method cl-user::setf-function-spec-name cl-user::setf-function-spec-name
- cl-user::define-undefined-method cl-user::report-bad-arg cl-user::%method-function
- cl-user::%function cl-user::%move-method-encapsulations-maybe cl-user::%fhave
- cl-user::forget-encapsulations cl-user::%add-method cl-user::check-defmethod-congruency
- cl-user::make-gf cl-user::lfun-bits cl-user::closure-function cl-user::defmethod-congruency-override
- cl-user::%method-name cl-user::%anonymous-method ccl::%path-get-long-dir-info
- ccl::sort-list-error ccl::compare-file-to-buffer)))
-
- ;(undefined-functions)